C++ Data Structures

    Using an Array Data Structure, we can combine many data values of similar data types, but what if we want a data structure which can hold different values of different data types, to solve this problem in C++ we have another Data Structure known as Structure .

    What is Structure in C++?

    In C++ the structure is a User-Defined Data Structure, which can be used to hold groups items of different data types. To define a structure in C++ we use the struct keyword, and variables reside in a structure known as Structure members.

    Create a Structure

    The struct keyword is used to create the structure and the items it consists known as Members or Fields of Structures.

    Structure Syntax:
    struct structureName
    {
    member1;
    member2;
    member3;
    };

    There are two types of Members in the C++ structure:

    • Data Member
    • Member Function

    Data Members are the variables which are inside the Structure block. Member Functions are the functions inside the Structure Block.

    Accessing Structure Member

    Once we have defined a structure with its members, we need to access it all the data, and to access the members of the structure we use the member access operator(.), which is a dot symbol . First, we need to define the Structure variable using the Structure Name and then using the structure variable and member access operator we can access any member of the structure. Example

    #include <iostream>
    #include <cstring>
    using namespace std;
    
        //defining a structure
    struct Students 
       {
          char  full_name[50]; // data members
          int  age;
          char  subject[100];
       };
    
    int main()
        { 
             struct Students sam; // sam is the structure variable
             strcpy(sam.full_name, "Sam Wick");  // full_name is the string data type so we have used the string funciton
             sam.age =10;
             strcpy(sam.subject,"Science");
             cout<<"The Full name of sam is: "<<sam.full_name;
             cout<<endl;
             cout<<"Sam Age is: "<< sam.age;
             return 0;
        }

    Output

    The Full name of sam is: Sam Wick
    Sam Age is: 10

    Behind the Code In this example first, we define a structure outside the main() function. And then using the struct keyword and Students name we create a new variable sam. Now sam is a structure student type data structure which can access any data member of Student structure. We can also make more than one Structure variable if we want.

    Structure Functions

    We can also define a user-defined function inside the structure block, and like we access the data member we can access the Member Functions of the Structure. Example

     #include <iostream>
    #include <cstring>
    using namespace std;
    
        //defining a structure
        struct Students 
             {
             char  full_name[50];
             int  age;
             char  subject[100];
          
             void show_detail()
                {
                    cout<<" Student Name is: "<<full_name;
                    cout<<endl;
                    cout<<"Student age is: "<<age;
                    cout<<endl;
                    cout<<"Student subject is: "<<subject;
                 }
             };
    
    int main()
        {
            struct Students sam; // sam is the structure variable
            strcpy(sam.full_name, "Sam Wick");  // full_name is the string data type so we have used the string funciton
            sam.age= 10; // setting the age of sam varible
            strcpy(sam.subject,"Science");  // setting the sam variable subject name
       
            //print student detail
            sam.show_detail(); // calling the structure member function
            return 0;
        }

    Output

    Student Name is: Sam Wick
    Student age is: 10
    Student subject is: Science

    Behind the Code In this example, we have defined a member function inside the struct Students block, and using the sam.show_detail() statement we called that function inside the main() function.

    Structure Pointer

    Like other basic data types, we can also use pointers with structure. But if we use a pointer with the structure we use (->) symbol as the member access operator instead of the dot (.) operator. Example

    #include <iostream>
    #include <cstring>
    using namespace std;
    
    //defining a structure
    
    struct Students 
       {
         char  full_name[50];
       };
     
    int main()
        {
               struct Students sam; // sam is the structure variable
                
               strcpy(sam.full_name, "Sam Wick");
    
               struct Students* sam_wick = &sam ; // the pointer variable sam_wick is also a structure variable
             
               cout<<"The full name of Student is: "<< sam_wick->full_name;  // here we have used -> operator because sam_wick is a structure pointer variable
               return 0;
        }

    Output

    The full name of Student is: Sam Wick

    Behind the Code Here sam is the structure variable, like other variables it also stores at some memory location. Now, here we have used the struct Students* sam_wick = &sam ; statement, which basically signifies that sam_wick is a pointer variable which holds the address of sam variable. We all know that pointer variable should be of similar data type which addresses it holding that’s why sam_wick is also a struct Students variable. In structure, if we want to access the data member of the structure using a pointer variable than we use the -> symbol as a member access operator.

    Structure Quick summary

    • The structure is a data structure which can hold different elements of different data types.
    • We can also define functions inside the structure variable.
    • The variable inside the structure known as Data members whereas the functions known as Member functions.
    • To access the data member and Member functions of the structure we use the structure variable with the member access operator.

    People are also reading: